The field of computer programming languages includes the passing of data between different programming languages.
Computer programming languages can define data types differently. For example, numerical fields can include different Endian order. More complex data structures, such as objects can include different internal structures that are managed by the corresponding programming language runtime environment or framework. For example, objects, such as in the JAVA® programming language, are accessible only within a JAVA program during runtime. JAVA is a registered trademark in the United States or in other countries.
The object is defined by elements or attributes, which further describe the object. For example, objects of an object type of rectangles can be described by elements of a width, and a length. A first object of the rectangles is defined by the element width of 1.7, and the element length of 2.5. A second object of the rectangles is defined by a width of 5.1 and a length of 7.3. Programming languages can manage and/or refer to the objects, the elements, and combinations thereof differently.
Programs written in different languages typically use interfaces provided with runtime environments to copy data from a first program in a runtime memory of a first programming language to a run time memory of a second program in a second programming language. However, interfaces typically do not provide direct copying of complex data structures, such as objects. For example, JAVA provides a JAVA Native Interface (JNI), which is a programming language framework that enables JAVA code running in a JAVA Virtual Machine (JVM) to call and be called by programs written in other languages, such as C, C++ and assembly. The JNI does not allow direct access to objects, but does provides an interface by which data contained in objects can be copied between the JAVA program to the C program.